<!DOCTYPE html>

<html lang="en" data-content_root="../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

  <title>CMake 3.31 Release Notes &mdash; CMake 4.1.1 Documentation</title>

    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a2c47e09" />
    <link rel="stylesheet" type="text/css" href="../_static/cmake.css?v=4d06bd55" />
    
    <script src="../_static/documentation_options.js?v=e6a937a4"></script>
    <script src="../_static/doctools.js?v=9bcbadda"></script>
    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
    
    <link rel="icon" href="../_static/cmake-favicon.ico"/>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="CMake 3.30 Release Notes" href="3.30.html" />
    <link rel="prev" title="CMake 4.0 Release Notes" href="4.0.html" />
 

  </head><body>
    <input id="sidebar-check" type="checkbox" />
    <label id="sidebar-overlay" for="sidebar-check"></label>



    <div class="related relbar1" role="navigation" aria-label="Related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="3.30.html" title="CMake 3.30 Release Notes"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="4.0.html" title="CMake 4.0 Release Notes"
             accesskey="P">previous</a> |</li>
  <li>
    <label class="sidebar-toggle" for="sidebar-check"></label>
  </li>
  <li class="rootlink">
    <img src="../_static/cmake-logo-16.png" width="16" height="16" alt=""/>
    <a href="https://cmake.org/">CMake 4.1.1</a>
    <span class="reldelim1"> &#187;</span>
  </li>
  <li>
    <a href="../index.html">Documentation</a> &#187;
  </li>

          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">CMake Release Notes</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">CMake 3.31 Release Notes</a></li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <section id="cmake-3-31-release-notes">
<h1><a class="toc-backref" href="#id2" role="doc-backlink">CMake 3.31 Release Notes</a><a class="headerlink" href="#cmake-3-31-release-notes" title="Link to this heading">¶</a></h1>
<nav class="contents" id="contents">
<p class="topic-title">Contents</p>
<ul class="simple">
<li><p><a class="reference internal" href="#cmake-3-31-release-notes" id="id2">CMake 3.31 Release Notes</a></p>
<ul>
<li><p><a class="reference internal" href="#new-features" id="id3">New Features</a></p>
<ul>
<li><p><a class="reference internal" href="#presets" id="id4">Presets</a></p></li>
<li><p><a class="reference internal" href="#generators" id="id5">Generators</a></p></li>
<li><p><a class="reference internal" href="#command-line" id="id6">Command-Line</a></p></li>
<li><p><a class="reference internal" href="#compilers" id="id7">Compilers</a></p></li>
<li><p><a class="reference internal" href="#commands" id="id8">Commands</a></p></li>
<li><p><a class="reference internal" href="#variables" id="id9">Variables</a></p></li>
<li><p><a class="reference internal" href="#properties" id="id10">Properties</a></p></li>
<li><p><a class="reference internal" href="#modules" id="id11">Modules</a></p></li>
<li><p><a class="reference internal" href="#ctest" id="id12">CTest</a></p></li>
<li><p><a class="reference internal" href="#cpack" id="id13">CPack</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#deprecated-and-removed-features" id="id14">Deprecated and Removed Features</a></p></li>
<li><p><a class="reference internal" href="#other-changes" id="id15">Other Changes</a></p></li>
<li><p><a class="reference internal" href="#updates" id="id16">Updates</a></p>
<ul>
<li><p><a class="reference internal" href="#id1" id="id17">3.31.1, 3.31.2, 3.31.3, 3.31.4, 3.31.5, 3.31.6, 3.31.7, 3.31.8</a></p></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
<p>Changes made since CMake 3.30 include the following.</p>
<section id="new-features">
<h2><a class="toc-backref" href="#id3" role="doc-backlink">New Features</a><a class="headerlink" href="#new-features" title="Link to this heading">¶</a></h2>
<section id="presets">
<h3><a class="toc-backref" href="#id4" role="doc-backlink">Presets</a><a class="headerlink" href="#presets" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p><span class="target" id="index-0-manual:cmake-presets(7)"></span><a class="reference internal" href="../manual/cmake-presets.7.html#manual:cmake-presets(7)" title="cmake-presets(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-presets(7)</span></code></a> files may now include comments using the key
<code class="docutils literal notranslate"><span class="pre">$comment</span></code> at any level within the JSON object to provide documentation.</p></li>
<li><p><span class="target" id="index-1-manual:cmake-presets(7)"></span><a class="reference internal" href="../manual/cmake-presets.7.html#manual:cmake-presets(7)" title="cmake-presets(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-presets(7)</span></code></a> files may now request graphviz output using
the <code class="docutils literal notranslate"><span class="pre">graphviz</span></code> key in a configure preset.</p></li>
</ul>
</section>
<section id="generators">
<h3><a class="toc-backref" href="#id5" role="doc-backlink">Generators</a><a class="headerlink" href="#generators" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <a class="reference internal" href="../manual/cmake-generators.7.html#ninja-generators"><span class="std std-ref">Ninja Generators</span></a> and <a class="reference internal" href="../manual/cmake-generators.7.html#makefile-generators"><span class="std std-ref">Makefile Generators</span></a> now produce
a <code class="docutils literal notranslate"><span class="pre">codegen</span></code> build target.  See policy <span class="target" id="index-0-policy:CMP0171"></span><a class="reference internal" href="../policy/CMP0171.html#policy:CMP0171" title="CMP0171"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0171</span></code></a>.  It drives a
subset of the build graph sufficient to run custom commands created with
<span class="target" id="index-0-command:add_custom_command"></span><a class="reference internal" href="../command/add_custom_command.html#command:add_custom_command" title="add_custom_command"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">add_custom_command()</span></code></a>'s new <code class="docutils literal notranslate"><span class="pre">CODEGEN</span></code> option.</p></li>
</ul>
</section>
<section id="command-line">
<h3><a class="toc-backref" href="#id6" role="doc-backlink">Command-Line</a><a class="headerlink" href="#command-line" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-workflow"><code class="xref std std-option docutils literal notranslate"><span class="pre">cmake</span> <span class="pre">--workflow</span></code></a> mode now accepts a preset name as the first
argument, allowing the simpler command line
<a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-workflow-preset"><code class="xref std std-option docutils literal notranslate"><span class="pre">cmake</span> <span class="pre">--workflow</span> <span class="pre">&lt;preset&gt;</span></code></a>.</p></li>
<li><p>The <a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-LR-A-H"><code class="xref std std-option docutils literal notranslate"><span class="pre">cmake</span> <span class="pre">-LR[A][H]</span></code></a> option was added to list cache entries
whose names match a regular expression.</p></li>
</ul>
</section>
<section id="compilers">
<h3><a class="toc-backref" href="#id7" role="doc-backlink">Compilers</a><a class="headerlink" href="#compilers" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The LFortran compiler is now supported with
<span class="target" id="index-0-variable:CMAKE_&lt;LANG&gt;_COMPILER_ID"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_&lt;LANG&gt;_COMPILER_ID" title="CMAKE_&lt;LANG&gt;_COMPILER_ID"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">compiler</span> <span class="pre">id</span></code></a> <code class="docutils literal notranslate"><span class="pre">LFortran</span></code>.</p></li>
</ul>
</section>
<section id="commands">
<h3><a class="toc-backref" href="#id8" role="doc-backlink">Commands</a><a class="headerlink" href="#commands" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-1-command:add_custom_command"></span><a class="reference internal" href="../command/add_custom_command.html#command:add_custom_command" title="add_custom_command"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">add_custom_command()</span></code></a> command gained a <code class="docutils literal notranslate"><span class="pre">CODEGEN</span></code> option
to mark a custom command's outputs as dependencies of a <code class="docutils literal notranslate"><span class="pre">codegen</span></code> target.
See policy <span class="target" id="index-1-policy:CMP0171"></span><a class="reference internal" href="../policy/CMP0171.html#policy:CMP0171" title="CMP0171"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0171</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-command:cmake_pkg_config"></span><a class="reference internal" href="../command/cmake_pkg_config.html#command:cmake_pkg_config" title="cmake_pkg_config"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">cmake_pkg_config()</span></code></a> command was added as an endpoint for using
CMake's native pkg-config format parser. The only supported option in this
release is <code class="docutils literal notranslate"><span class="pre">EXTRACT</span></code>, which provides low-level access to the values
produced by parsing a pkg-config file. For most users, this is not yet a
suitable replacement for the <span class="target" id="index-0-module:FindPkgConfig"></span><a class="reference internal" href="../module/FindPkgConfig.html#module:FindPkgConfig" title="FindPkgConfig"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPkgConfig</span></code></a> module.</p></li>
<li><p>The <span class="target" id="index-0-command:file"></span><a class="reference internal" href="../command/file.html#archive-create" title="file(archive_create)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(ARCHIVE_CREATE)</span></code></a> command gained a <code class="docutils literal notranslate"><span class="pre">WORKING_DIRECTORY</span></code>
option to specify a working directory for the archiving process.</p></li>
<li><p>The <span class="target" id="index-1-command:file"></span><a class="reference internal" href="../command/file.html#make-directory" title="file(make_directory)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(MAKE_DIRECTORY)</span></code></a> command gained a <code class="docutils literal notranslate"><span class="pre">RESULT</span></code> option
to capture failure in a result variable.</p></li>
<li><p>The <span class="target" id="index-0-command:install"></span><a class="reference internal" href="../command/install.html#files" title="install(files)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">install(FILES)</span></code></a> and <span class="target" id="index-1-command:install"></span><a class="reference internal" href="../command/install.html#directory" title="install(directory)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">install(DIRECTORY)</span></code></a> commands'
<code class="docutils literal notranslate"><span class="pre">TYPE</span></code> argument gained support for a <code class="docutils literal notranslate"><span class="pre">LIBEXEC</span></code> type.</p></li>
</ul>
</section>
<section id="variables">
<h3><a class="toc-backref" href="#id9" role="doc-backlink">Variables</a><a class="headerlink" href="#variables" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-variable:CMAKE_AIX_SHARED_LIBRARY_ARCHIVE"></span><a class="reference internal" href="../variable/CMAKE_AIX_SHARED_LIBRARY_ARCHIVE.html#variable:CMAKE_AIX_SHARED_LIBRARY_ARCHIVE" title="CMAKE_AIX_SHARED_LIBRARY_ARCHIVE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_AIX_SHARED_LIBRARY_ARCHIVE</span></code></a> variable and corresponding
<span class="target" id="index-0-prop_tgt:AIX_SHARED_LIBRARY_ARCHIVE"></span><a class="reference internal" href="../prop_tgt/AIX_SHARED_LIBRARY_ARCHIVE.html#prop_tgt:AIX_SHARED_LIBRARY_ARCHIVE" title="AIX_SHARED_LIBRARY_ARCHIVE"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">AIX_SHARED_LIBRARY_ARCHIVE</span></code></a> target property were added to
create shared libraries on AIX as shared library archives.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_EXPORT_BUILD_DATABASE"></span><a class="reference internal" href="../variable/CMAKE_EXPORT_BUILD_DATABASE.html#variable:CMAKE_EXPORT_BUILD_DATABASE" title="CMAKE_EXPORT_BUILD_DATABASE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_EXPORT_BUILD_DATABASE</span></code></a> variable, a corresponding
<span class="target" id="index-0-envvar:CMAKE_EXPORT_BUILD_DATABASE"></span><a class="reference internal" href="../envvar/CMAKE_EXPORT_BUILD_DATABASE.html#envvar:CMAKE_EXPORT_BUILD_DATABASE" title="CMAKE_EXPORT_BUILD_DATABASE"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CMAKE_EXPORT_BUILD_DATABASE</span></code></a> environment variable, and an
<span class="target" id="index-0-prop_tgt:EXPORT_BUILD_DATABASE"></span><a class="reference internal" href="../prop_tgt/EXPORT_BUILD_DATABASE.html#prop_tgt:EXPORT_BUILD_DATABASE" title="EXPORT_BUILD_DATABASE"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">EXPORT_BUILD_DATABASE</span></code></a> target property, were added to
enable exporting C++ module compile commands.
This is only supported with <a class="reference internal" href="../manual/cmake-generators.7.html#ninja-generators"><span class="std std-ref">Ninja Generators</span></a>.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_HOST_EXECUTABLE_SUFFIX"></span><a class="reference internal" href="../variable/CMAKE_HOST_EXECUTABLE_SUFFIX.html#variable:CMAKE_HOST_EXECUTABLE_SUFFIX" title="CMAKE_HOST_EXECUTABLE_SUFFIX"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_HOST_EXECUTABLE_SUFFIX</span></code></a> variable was added to
provide the suffix for executable names on the host platform.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_&lt;LANG&gt;_HOST_COMPILER_ID"></span><a class="reference internal" href="../variable/CMAKE_LANG_HOST_COMPILER_ID.html#variable:CMAKE_&lt;LANG&gt;_HOST_COMPILER_ID" title="CMAKE_&lt;LANG&gt;_HOST_COMPILER_ID"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_&lt;LANG&gt;_HOST_COMPILER_ID</span></code></a> and
<span class="target" id="index-0-variable:CMAKE_&lt;LANG&gt;_HOST_COMPILER_VERSION"></span><a class="reference internal" href="../variable/CMAKE_LANG_HOST_COMPILER_VERSION.html#variable:CMAKE_&lt;LANG&gt;_HOST_COMPILER_VERSION" title="CMAKE_&lt;LANG&gt;_HOST_COMPILER_VERSION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_&lt;LANG&gt;_HOST_COMPILER_VERSION</span></code></a> variables were added,
where <code class="docutils literal notranslate"><span class="pre">&lt;LANG&gt;</span></code> is either <code class="docutils literal notranslate"><span class="pre">CUDA</span></code> or <code class="docutils literal notranslate"><span class="pre">HIP</span></code>.  They are populated
when <span class="target" id="index-1-variable:CMAKE_&lt;LANG&gt;_COMPILER_ID"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_&lt;LANG&gt;_COMPILER_ID" title="CMAKE_&lt;LANG&gt;_COMPILER_ID"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_&lt;LANG&gt;_COMPILER_ID</span></code></a> is <code class="docutils literal notranslate"><span class="pre">NVIDIA</span></code> to identify
NVCC's host compiler.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_&lt;LANG&gt;_STANDARD_LINK_DIRECTORIES"></span><a class="reference internal" href="../variable/CMAKE_LANG_STANDARD_LINK_DIRECTORIES.html#variable:CMAKE_&lt;LANG&gt;_STANDARD_LINK_DIRECTORIES" title="CMAKE_&lt;LANG&gt;_STANDARD_LINK_DIRECTORIES"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_&lt;LANG&gt;_STANDARD_LINK_DIRECTORIES</span></code></a> variable was added.
Toolchain files can set this variable to control which link library directory
paths are always passed to the compiler for the specified language.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_LINK_LIBRARIES_STRATEGY"></span><a class="reference internal" href="../variable/CMAKE_LINK_LIBRARIES_STRATEGY.html#variable:CMAKE_LINK_LIBRARIES_STRATEGY" title="CMAKE_LINK_LIBRARIES_STRATEGY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_LINK_LIBRARIES_STRATEGY</span></code></a> variable and
corresponding <span class="target" id="index-0-prop_tgt:LINK_LIBRARIES_STRATEGY"></span><a class="reference internal" href="../prop_tgt/LINK_LIBRARIES_STRATEGY.html#prop_tgt:LINK_LIBRARIES_STRATEGY" title="LINK_LIBRARIES_STRATEGY"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">LINK_LIBRARIES_STRATEGY</span></code></a> target
property were added to optionally specify the strategy
CMake uses to generate link lines.</p></li>
<li><p>The <span class="target" id="index-0-envvar:CMAKE_CONFIG_DIR"></span><a class="reference internal" href="../envvar/CMAKE_CONFIG_DIR.html#envvar:CMAKE_CONFIG_DIR" title="CMAKE_CONFIG_DIR"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CMAKE_CONFIG_DIR</span></code></a> environment variable was added to specify a
CMake user-wide configuration directory for <span class="target" id="index-0-manual:cmake-file-api(7)"></span><a class="reference internal" href="../manual/cmake-file-api.7.html#manual:cmake-file-api(7)" title="cmake-file-api(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-file-api(7)</span></code></a>
queries.</p></li>
</ul>
</section>
<section id="properties">
<h3><a class="toc-backref" href="#id10" role="doc-backlink">Properties</a><a class="headerlink" href="#properties" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-prop_tgt:MACOSX_FRAMEWORK_INFO_PLIST"></span><a class="reference internal" href="../prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST.html#prop_tgt:MACOSX_FRAMEWORK_INFO_PLIST" title="MACOSX_FRAMEWORK_INFO_PLIST"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">MACOSX_FRAMEWORK_BUNDLE_NAME</span></code></a>
target property was added to set the <code class="docutils literal notranslate"><span class="pre">CFBundleName</span></code> key in an Apple
<span class="target" id="index-0-prop_tgt:FRAMEWORK"></span><a class="reference internal" href="../prop_tgt/FRAMEWORK.html#prop_tgt:FRAMEWORK" title="FRAMEWORK"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">FRAMEWORK</span></code></a>'s <code class="docutils literal notranslate"><span class="pre">Info.plist</span></code> file.</p></li>
<li><p>The <span class="target" id="index-0-prop_tgt:UNITY_BUILD"></span><a class="reference internal" href="../prop_tgt/UNITY_BUILD.html#prop_tgt:UNITY_BUILD" title="UNITY_BUILD"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">UNITY_BUILD</span></code></a> target property now supports the
<code class="docutils literal notranslate"><span class="pre">CUDA</span></code> language.</p></li>
<li><p>The <span class="target" id="index-0-prop_tgt:VS_FRAMEWORK_REFERENCES"></span><a class="reference internal" href="../prop_tgt/VS_FRAMEWORK_REFERENCES.html#prop_tgt:VS_FRAMEWORK_REFERENCES" title="VS_FRAMEWORK_REFERENCES"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">VS_FRAMEWORK_REFERENCES</span></code></a> target property was added
to tell <a class="reference internal" href="../manual/cmake-generators.7.html#visual-studio-generators"><span class="std std-ref">Visual Studio Generators</span></a> to add framework references.</p></li>
</ul>
</section>
<section id="modules">
<h3><a class="toc-backref" href="#id11" role="doc-backlink">Modules</a><a class="headerlink" href="#modules" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>Check modules now support a <code class="docutils literal notranslate"><span class="pre">CMAKE_REQUIRED_LINK_DIRECTORIES</span></code> variable.
The following modules gained this support:</p>
<ul>
<li><p><span class="target" id="index-0-module:CMakePushCheckState"></span><a class="reference internal" href="../module/CMakePushCheckState.html#module:CMakePushCheckState" title="CMakePushCheckState"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CMakePushCheckState</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckCCompilerFlag"></span><a class="reference internal" href="../module/CheckCCompilerFlag.html#module:CheckCCompilerFlag" title="CheckCCompilerFlag"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckCCompilerFlag</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckCSourceCompiles"></span><a class="reference internal" href="../module/CheckCSourceCompiles.html#module:CheckCSourceCompiles" title="CheckCSourceCompiles"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckCSourceCompiles</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckCSourceRuns"></span><a class="reference internal" href="../module/CheckCSourceRuns.html#module:CheckCSourceRuns" title="CheckCSourceRuns"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckCSourceRuns</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckCXXCompilerFlag"></span><a class="reference internal" href="../module/CheckCXXCompilerFlag.html#module:CheckCXXCompilerFlag" title="CheckCXXCompilerFlag"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckCXXCompilerFlag</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckCXXSourceCompiles"></span><a class="reference internal" href="../module/CheckCXXSourceCompiles.html#module:CheckCXXSourceCompiles" title="CheckCXXSourceCompiles"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckCXXSourceCompiles</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckCXXSourceRuns"></span><a class="reference internal" href="../module/CheckCXXSourceRuns.html#module:CheckCXXSourceRuns" title="CheckCXXSourceRuns"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckCXXSourceRuns</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckCXXSymbolExists"></span><a class="reference internal" href="../module/CheckCXXSymbolExists.html#module:CheckCXXSymbolExists" title="CheckCXXSymbolExists"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckCXXSymbolExists</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckCompilerFlag"></span><a class="reference internal" href="../module/CheckCompilerFlag.html#module:CheckCompilerFlag" title="CheckCompilerFlag"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckCompilerFlag</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckFortranCompilerFlag"></span><a class="reference internal" href="../module/CheckFortranCompilerFlag.html#module:CheckFortranCompilerFlag" title="CheckFortranCompilerFlag"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckFortranCompilerFlag</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckFortranFunctionExists"></span><a class="reference internal" href="../module/CheckFortranFunctionExists.html#module:CheckFortranFunctionExists" title="CheckFortranFunctionExists"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckFortranFunctionExists</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckFortranSourceCompiles"></span><a class="reference internal" href="../module/CheckFortranSourceCompiles.html#module:CheckFortranSourceCompiles" title="CheckFortranSourceCompiles"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckFortranSourceCompiles</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckFortranSourceRuns"></span><a class="reference internal" href="../module/CheckFortranSourceRuns.html#module:CheckFortranSourceRuns" title="CheckFortranSourceRuns"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckFortranSourceRuns</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckFunctionExists"></span><a class="reference internal" href="../module/CheckFunctionExists.html#module:CheckFunctionExists" title="CheckFunctionExists"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckFunctionExists</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckIncludeFile"></span><a class="reference internal" href="../module/CheckIncludeFile.html#module:CheckIncludeFile" title="CheckIncludeFile"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckIncludeFile</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckIncludeFileCXX"></span><a class="reference internal" href="../module/CheckIncludeFileCXX.html#module:CheckIncludeFileCXX" title="CheckIncludeFileCXX"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckIncludeFileCXX</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckIncludeFiles"></span><a class="reference internal" href="../module/CheckIncludeFiles.html#module:CheckIncludeFiles" title="CheckIncludeFiles"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckIncludeFiles</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckOBJCCompilerFlag"></span><a class="reference internal" href="../module/CheckOBJCCompilerFlag.html#module:CheckOBJCCompilerFlag" title="CheckOBJCCompilerFlag"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckOBJCCompilerFlag</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckLibraryExists"></span><a class="reference internal" href="../module/CheckLibraryExists.html#module:CheckLibraryExists" title="CheckLibraryExists"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckLibraryExists</span></code></a></p></li>
<li><p><span class="target" id="index-1-module:CheckOBJCCompilerFlag"></span><a class="reference internal" href="../module/CheckOBJCCompilerFlag.html#module:CheckOBJCCompilerFlag" title="CheckOBJCCompilerFlag"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckOBJCCompilerFlag</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckOBJCSourceCompiles"></span><a class="reference internal" href="../module/CheckOBJCSourceCompiles.html#module:CheckOBJCSourceCompiles" title="CheckOBJCSourceCompiles"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckOBJCSourceCompiles</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckOBJCSourceRuns"></span><a class="reference internal" href="../module/CheckOBJCSourceRuns.html#module:CheckOBJCSourceRuns" title="CheckOBJCSourceRuns"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckOBJCSourceRuns</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckOBJCXXCompilerFlag"></span><a class="reference internal" href="../module/CheckOBJCXXCompilerFlag.html#module:CheckOBJCXXCompilerFlag" title="CheckOBJCXXCompilerFlag"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckOBJCXXCompilerFlag</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckOBJCXXSourceCompiles"></span><a class="reference internal" href="../module/CheckOBJCXXSourceCompiles.html#module:CheckOBJCXXSourceCompiles" title="CheckOBJCXXSourceCompiles"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckOBJCXXSourceCompiles</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckOBJCXXSourceRuns"></span><a class="reference internal" href="../module/CheckOBJCXXSourceRuns.html#module:CheckOBJCXXSourceRuns" title="CheckOBJCXXSourceRuns"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckOBJCXXSourceRuns</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckPrototypeDefinition"></span><a class="reference internal" href="../module/CheckPrototypeDefinition.html#module:CheckPrototypeDefinition" title="CheckPrototypeDefinition"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckPrototypeDefinition</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckSourceCompiles"></span><a class="reference internal" href="../module/CheckSourceCompiles.html#module:CheckSourceCompiles" title="CheckSourceCompiles"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckSourceCompiles</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckSourceRuns"></span><a class="reference internal" href="../module/CheckSourceRuns.html#module:CheckSourceRuns" title="CheckSourceRuns"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckSourceRuns</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckStructHasMember"></span><a class="reference internal" href="../module/CheckStructHasMember.html#module:CheckStructHasMember" title="CheckStructHasMember"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckStructHasMember</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckSymbolExists"></span><a class="reference internal" href="../module/CheckSymbolExists.html#module:CheckSymbolExists" title="CheckSymbolExists"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckSymbolExists</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckTypeSize"></span><a class="reference internal" href="../module/CheckTypeSize.html#module:CheckTypeSize" title="CheckTypeSize"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckTypeSize</span></code></a></p></li>
<li><p><span class="target" id="index-0-module:CheckVariableExists"></span><a class="reference internal" href="../module/CheckVariableExists.html#module:CheckVariableExists" title="CheckVariableExists"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CheckVariableExists</span></code></a></p></li>
</ul>
</li>
<li><p>The <span class="target" id="index-0-module:CMakePackageConfigHelpers"></span><a class="reference internal" href="../module/CMakePackageConfigHelpers.html#module:CMakePackageConfigHelpers" title="CMakePackageConfigHelpers"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CMakePackageConfigHelpers</span></code></a> module's
<span class="target" id="index-0-command:generate_apple_platform_selection_file"></span><a class="reference internal" href="../module/CMakePackageConfigHelpers.html#command:generate_apple_platform_selection_file" title="generate_apple_platform_selection_file"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">generate_apple_platform_selection_file()</span></code></a> function
gained support for iOS Mac Catalyst.</p></li>
<li><p>The <span class="target" id="index-0-module:GoogleTest"></span><a class="reference internal" href="../module/GoogleTest.html#module:GoogleTest" title="GoogleTest"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">GoogleTest</span></code></a> module <span class="target" id="index-0-command:gtest_discover_tests"></span><a class="reference internal" href="../module/GoogleTest.html#command:gtest_discover_tests" title="gtest_discover_tests"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">gtest_discover_tests()</span></code></a> command
gained a new <code class="docutils literal notranslate"><span class="pre">DISCOVERY_EXTRA_ARGS</span></code> keyword.  It allows extra arguments
to be appended to the command line when querying for the list of tests.</p></li>
<li><p>The <span class="target" id="index-0-module:FindCUDAToolkit"></span><a class="reference internal" href="../module/FindCUDAToolkit.html#module:FindCUDAToolkit" title="FindCUDAToolkit"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindCUDAToolkit</span></code></a> module now provides a <code class="docutils literal notranslate"><span class="pre">CUDA::nvml_static</span></code>
target.</p></li>
<li><p>The <span class="target" id="index-0-module:FindOpenMP"></span><a class="reference internal" href="../module/FindOpenMP.html#module:FindOpenMP" title="FindOpenMP"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindOpenMP</span></code></a> module gained support for the <code class="docutils literal notranslate"><span class="pre">CUDA</span></code> language.</p></li>
</ul>
</section>
<section id="ctest">
<h3><a class="toc-backref" href="#id12" role="doc-backlink">CTest</a><a class="headerlink" href="#ctest" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-command:ctest_submit"></span><a class="reference internal" href="../command/ctest_submit.html#command:ctest_submit" title="ctest_submit"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">ctest_submit()</span></code></a> command and <a class="reference internal" href="../manual/ctest.1.html#cmdoption-ctest-T"><code class="xref std std-option docutils literal notranslate"><span class="pre">ctest</span> <span class="pre">-T</span> <span class="pre">Submit</span></code></a>
step now verify TLS server certificates for connections to <code class="docutils literal notranslate"><span class="pre">https://</span></code> URLs
by default.  See the <span class="target" id="index-0-variable:CTEST_TLS_VERIFY"></span><a class="reference internal" href="../variable/CTEST_TLS_VERIFY.html#variable:CTEST_TLS_VERIFY" title="CTEST_TLS_VERIFY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CTEST_TLS_VERIFY</span></code></a> variable for details.</p></li>
<li><p>The <span class="target" id="index-1-command:ctest_submit"></span><a class="reference internal" href="../command/ctest_submit.html#command:ctest_submit" title="ctest_submit"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">ctest_submit()</span></code></a> command and <a class="reference internal" href="../manual/ctest.1.html#cmdoption-ctest-T"><code class="xref std std-option docutils literal notranslate"><span class="pre">ctest</span> <span class="pre">-T</span> <span class="pre">Submit</span></code></a>
step now require TLS 1.2 or higher for connections to <code class="docutils literal notranslate"><span class="pre">https://</span></code> URLs by
default.  See the <span class="target" id="index-0-variable:CTEST_TLS_VERSION"></span><a class="reference internal" href="../variable/CTEST_TLS_VERSION.html#variable:CTEST_TLS_VERSION" title="CTEST_TLS_VERSION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CTEST_TLS_VERSION</span></code></a> variable for details.</p></li>
</ul>
</section>
<section id="cpack">
<h3><a class="toc-backref" href="#id13" role="doc-backlink">CPack</a><a class="headerlink" href="#cpack" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-cpack_gen:CPack DEB Generator"></span><a class="reference internal" href="../cpack_gen/deb.html#cpack_gen:CPack DEB Generator" title="CPack DEB Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">DEB</span> <span class="pre">Generator</span></code></a> gained a
<span class="target" id="index-0-variable:CPACK_DEBIAN_PACKAGE_MULTIARCH"></span><a class="reference internal" href="../cpack_gen/deb.html#variable:CPACK_DEBIAN_PACKAGE_MULTIARCH" title="CPACK_DEBIAN_PACKAGE_MULTIARCH"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_DEBIAN_PACKAGE_MULTIARCH</span></code></a> option
to support multi-arch packages.</p></li>
<li><p>The <span class="target" id="index-0-cpack_gen:CPack IFW Generator"></span><a class="reference internal" href="../cpack_gen/ifw.html#cpack_gen:CPack IFW Generator" title="CPack IFW Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">IFW</span> <span class="pre">Generator</span></code></a> gained the new
<span class="target" id="index-0-variable:CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS"></span><a class="reference internal" href="../cpack_gen/ifw.html#variable:CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS" title="CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS</span></code></a> variable to
specify images associated with entries of
<span class="target" id="index-0-variable:CPACK_IFW_PACKAGE_PRODUCT_IMAGES"></span><a class="reference internal" href="../cpack_gen/ifw.html#variable:CPACK_IFW_PACKAGE_PRODUCT_IMAGES" title="CPACK_IFW_PACKAGE_PRODUCT_IMAGES"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_IFW_PACKAGE_PRODUCT_IMAGES</span></code></a>.
This feature is available for QtIFW 4.0 and newer.</p></li>
<li><p>The <span class="target" id="index-0-cpack_gen:CPack RPM Generator"></span><a class="reference internal" href="../cpack_gen/rpm.html#cpack_gen:CPack RPM Generator" title="CPack RPM Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">RPM</span> <span class="pre">Generator</span></code></a> gained support for <code class="docutils literal notranslate"><span class="pre">zstd</span></code> as a
<span class="target" id="index-0-variable:CPACK_RPM_COMPRESSION_TYPE"></span><a class="reference internal" href="../cpack_gen/rpm.html#variable:CPACK_RPM_COMPRESSION_TYPE" title="CPACK_RPM_COMPRESSION_TYPE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_RPM_COMPRESSION_TYPE</span></code></a> value.</p></li>
<li><p>The <span class="target" id="index-0-module:CPack"></span><a class="reference internal" href="../module/CPack.html#module:CPack" title="CPack"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CPack</span></code></a> module enables per-machine installation by default
in the <span class="target" id="index-0-cpack_gen:CPack WIX Generator"></span><a class="reference internal" href="../cpack_gen/wix.html#cpack_gen:CPack WIX Generator" title="CPack WIX Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">WIX</span> <span class="pre">Generator</span></code></a>.  See policy <span class="target" id="index-0-policy:CMP0172"></span><a class="reference internal" href="../policy/CMP0172.html#policy:CMP0172" title="CMP0172"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0172</span></code></a>
and the <span class="target" id="index-0-variable:CPACK_WIX_INSTALL_SCOPE"></span><a class="reference internal" href="../cpack_gen/wix.html#variable:CPACK_WIX_INSTALL_SCOPE" title="CPACK_WIX_INSTALL_SCOPE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_WIX_INSTALL_SCOPE</span></code></a> variable.</p></li>
</ul>
</section>
</section>
<section id="deprecated-and-removed-features">
<h2><a class="toc-backref" href="#id14" role="doc-backlink">Deprecated and Removed Features</a><a class="headerlink" href="#deprecated-and-removed-features" title="Link to this heading">¶</a></h2>
<ul class="simple">
<li><p>Compatibility with versions of CMake older than 3.10 is now deprecated
and will be removed from a future version.  Calls to
<span class="target" id="index-0-command:cmake_minimum_required"></span><a class="reference internal" href="../command/cmake_minimum_required.html#command:cmake_minimum_required" title="cmake_minimum_required"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">cmake_minimum_required()</span></code></a> or <span class="target" id="index-0-command:cmake_policy"></span><a class="reference internal" href="../command/cmake_policy.html#command:cmake_policy" title="cmake_policy"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">cmake_policy()</span></code></a> that set
the policy version to an older value now issue a deprecation diagnostic.</p></li>
<li><p>The <span class="target" id="index-0-module:CMakeFindFrameworks"></span><a class="reference internal" href="../module/CMakeFindFrameworks.html#module:CMakeFindFrameworks" title="CMakeFindFrameworks"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">CMakeFindFrameworks</span></code></a> module has been deprecated via
<span class="target" id="index-0-policy:CMP0173"></span><a class="reference internal" href="../policy/CMP0173.html#policy:CMP0173" title="CMP0173"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0173</span></code></a>. Projects should use <span class="target" id="index-0-command:find_library"></span><a class="reference internal" href="../command/find_library.html#command:find_library" title="find_library"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">find_library()</span></code></a> instead.</p></li>
<li><p>The <span class="target" id="index-0-generator:Visual Studio 12 2013"></span><a class="reference internal" href="../generator/Visual%20Studio%2012%202013.html#generator:Visual Studio 12 2013" title="Visual Studio 12 2013"><code class="xref cmake cmake-generator docutils literal notranslate"><span class="pre">Visual</span> <span class="pre">Studio</span> <span class="pre">12</span> <span class="pre">2013</span></code></a> generator has been removed.</p></li>
</ul>
</section>
<section id="other-changes">
<h2><a class="toc-backref" href="#id15" role="doc-backlink">Other Changes</a><a class="headerlink" href="#other-changes" title="Link to this heading">¶</a></h2>
<ul>
<li><p>When static libraries on link lines are de-duplicated (by policy
<span class="target" id="index-0-policy:CMP0156"></span><a class="reference internal" href="../policy/CMP0156.html#policy:CMP0156" title="CMP0156"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0156</span></code></a>), the first occurrence is now kept on all platforms.
See policy <span class="target" id="index-0-policy:CMP0179"></span><a class="reference internal" href="../policy/CMP0179.html#policy:CMP0179" title="CMP0179"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0179</span></code></a>.</p></li>
<li><p>Empty list elements in the <span class="target" id="index-0-prop_tgt:TEST_LAUNCHER"></span><a class="reference internal" href="../prop_tgt/TEST_LAUNCHER.html#prop_tgt:TEST_LAUNCHER" title="TEST_LAUNCHER"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">TEST_LAUNCHER</span></code></a> and
<span class="target" id="index-0-prop_tgt:CROSSCOMPILING_EMULATOR"></span><a class="reference internal" href="../prop_tgt/CROSSCOMPILING_EMULATOR.html#prop_tgt:CROSSCOMPILING_EMULATOR" title="CROSSCOMPILING_EMULATOR"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">CROSSCOMPILING_EMULATOR</span></code></a> target properties are now preserved by:</p>
<ul class="simple">
<li><p>The <span class="target" id="index-0-command:add_test"></span><a class="reference internal" href="../command/add_test.html#command:add_test" title="add_test"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">add_test()</span></code></a> command.</p></li>
<li><p>The <span class="target" id="index-0-command:externaldata_add_test"></span><a class="reference internal" href="../module/ExternalData.html#command:externaldata_add_test" title="externaldata_add_test"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">ExternalData_Add_Test()</span></code></a> command from the
<span class="target" id="index-0-module:ExternalData"></span><a class="reference internal" href="../module/ExternalData.html#module:ExternalData" title="ExternalData"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">ExternalData</span></code></a> module.</p></li>
<li><p>The <span class="target" id="index-0-command:gtest_add_tests"></span><a class="reference internal" href="../module/GoogleTest.html#command:gtest_add_tests" title="gtest_add_tests"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">gtest_add_tests()</span></code></a> and <span class="target" id="index-1-command:gtest_discover_tests"></span><a class="reference internal" href="../module/GoogleTest.html#command:gtest_discover_tests" title="gtest_discover_tests"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">gtest_discover_tests()</span></code></a>
commands from the <span class="target" id="index-1-module:GoogleTest"></span><a class="reference internal" href="../module/GoogleTest.html#module:GoogleTest" title="GoogleTest"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">GoogleTest</span></code></a> module.
Empty list elements after the <code class="docutils literal notranslate"><span class="pre">EXTRA_ARGS</span></code> keyword of these
two commands are also now preserved.</p></li>
</ul>
<p>See policy <span class="target" id="index-0-policy:CMP0178"></span><a class="reference internal" href="../policy/CMP0178.html#policy:CMP0178" title="CMP0178"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0178</span></code></a>.</p>
</li>
<li><p>The <span class="target" id="index-0-command:execute_process"></span><a class="reference internal" href="../command/execute_process.html#command:execute_process" title="execute_process"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">execute_process()</span></code></a> command's <code class="docutils literal notranslate"><span class="pre">ENCODING</span></code> option,
meaningful on Windows, now defaults to <code class="docutils literal notranslate"><span class="pre">UTF-8</span></code>.
See policy <span class="target" id="index-0-policy:CMP0176"></span><a class="reference internal" href="../policy/CMP0176.html#policy:CMP0176" title="CMP0176"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0176</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-2-command:file"></span><a class="reference internal" href="../command/file.html#download" title="file(download)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(DOWNLOAD)</span></code></a> and <span class="target" id="index-3-command:file"></span><a class="reference internal" href="../command/file.html#upload" title="file(upload)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(UPLOAD)</span></code></a> commands now
verify TLS server certificates for connections to <code class="docutils literal notranslate"><span class="pre">https://</span></code> URLs by
default.  See the <span class="target" id="index-0-variable:CMAKE_TLS_VERIFY"></span><a class="reference internal" href="../variable/CMAKE_TLS_VERIFY.html#variable:CMAKE_TLS_VERIFY" title="CMAKE_TLS_VERIFY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_TLS_VERIFY</span></code></a> variable for details.
This change was made without a policy so that users are protected
even when building projects that have not been updated.
Users may set the <span class="target" id="index-0-envvar:CMAKE_TLS_VERIFY"></span><a class="reference internal" href="../envvar/CMAKE_TLS_VERIFY.html#envvar:CMAKE_TLS_VERIFY" title="CMAKE_TLS_VERIFY"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CMAKE_TLS_VERIFY</span></code></a> environment
variable to <code class="docutils literal notranslate"><span class="pre">0</span></code> to restore the old default.</p></li>
<li><p>The <span class="target" id="index-4-command:file"></span><a class="reference internal" href="../command/file.html#download" title="file(download)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(DOWNLOAD)</span></code></a> and <span class="target" id="index-5-command:file"></span><a class="reference internal" href="../command/file.html#upload" title="file(upload)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(UPLOAD)</span></code></a> commands now
require TLS 1.2 or higher for connections to <code class="docutils literal notranslate"><span class="pre">https://</span></code> URLs by default.
See the <span class="target" id="index-0-variable:CMAKE_TLS_VERSION"></span><a class="reference internal" href="../variable/CMAKE_TLS_VERSION.html#variable:CMAKE_TLS_VERSION" title="CMAKE_TLS_VERSION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_TLS_VERSION</span></code></a> variable for details.</p></li>
<li><p>The <span class="target" id="index-6-command:file"></span><a class="reference internal" href="../command/file.html#get-runtime-dependencies" title="file(get_runtime_dependencies)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(GET_RUNTIME_DEPENDENCIES)</span></code></a> command was updated
to more closely match the dynamic loader's behavior on Linux.</p></li>
<li><p>The <span class="target" id="index-2-command:install"></span><a class="reference internal" href="../command/install.html#command:install" title="install"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">install()</span></code></a> command's <code class="docutils literal notranslate"><span class="pre">DESTINATION</span></code> arguments are
now <a class="reference internal" href="../command/cmake_path.html#normalization"><span class="std std-ref">normalized</span></a>, with the exception
of <code class="docutils literal notranslate"><span class="pre">INCLUDES</span> <span class="pre">DESTINATION</span></code> arguments in <span class="target" id="index-3-command:install"></span><a class="reference internal" href="../command/install.html#targets" title="install(targets)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">install(TARGETS)</span></code></a>.
See policy <span class="target" id="index-0-policy:CMP0177"></span><a class="reference internal" href="../policy/CMP0177.html#policy:CMP0177" title="CMP0177"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0177</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project()</span></code></a> command now always sets
<span class="target" id="index-0-variable:&lt;PROJECT-NAME&gt;_SOURCE_DIR"></span><a class="reference internal" href="../variable/PROJECT-NAME_SOURCE_DIR.html#variable:&lt;PROJECT-NAME&gt;_SOURCE_DIR" title="&lt;PROJECT-NAME&gt;_SOURCE_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_SOURCE_DIR</span></code></a>, <span class="target" id="index-0-variable:&lt;PROJECT-NAME&gt;_BINARY_DIR"></span><a class="reference internal" href="../variable/PROJECT-NAME_BINARY_DIR.html#variable:&lt;PROJECT-NAME&gt;_BINARY_DIR" title="&lt;PROJECT-NAME&gt;_BINARY_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_BINARY_DIR</span></code></a>,
and <span class="target" id="index-0-variable:&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL"></span><a class="reference internal" href="../variable/PROJECT-NAME_IS_TOP_LEVEL.html#variable:&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL" title="&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL</span></code></a> as both normal variables and
cache entries.  See policy <span class="target" id="index-0-policy:CMP0180"></span><a class="reference internal" href="../policy/CMP0180.html#policy:CMP0180" title="CMP0180"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0180</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-command:cmake_parse_arguments"></span><a class="reference internal" href="../command/cmake_parse_arguments.html#command:cmake_parse_arguments" title="cmake_parse_arguments(parse_argv)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">cmake_parse_arguments(PARSE_ARGV)</span></code></a> command now defines a
variable for an empty string after a single-value keyword. See policy
<span class="target" id="index-0-policy:CMP0174"></span><a class="reference internal" href="../policy/CMP0174.html#policy:CMP0174" title="CMP0174"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0174</span></code></a>.</p></li>
</ul>
</section>
<section id="updates">
<h2><a class="toc-backref" href="#id16" role="doc-backlink">Updates</a><a class="headerlink" href="#updates" title="Link to this heading">¶</a></h2>
<p>Changes made since CMake 3.31.0 include the following.</p>
<section id="id1">
<h3><a class="toc-backref" href="#id17" role="doc-backlink">3.31.1, 3.31.2, 3.31.3, 3.31.4, 3.31.5, 3.31.6, 3.31.7, 3.31.8</a><a class="headerlink" href="#id1" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>These versions made no changes to documented features or interfaces.
Some implementation updates were made to support ecosystem changes
and/or fix regressions.</p></li>
</ul>
</section>
</section>
</section>


            <div class="clearer"></div>
          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="Main">
        <div class="sphinxsidebarwrapper">
  <div>
    <h3>Table of Contents</h3>
    <ul>
<li><a class="reference internal" href="#">CMake 3.31 Release Notes</a><ul>
<li><a class="reference internal" href="#new-features">New Features</a><ul>
<li><a class="reference internal" href="#presets">Presets</a></li>
<li><a class="reference internal" href="#generators">Generators</a></li>
<li><a class="reference internal" href="#command-line">Command-Line</a></li>
<li><a class="reference internal" href="#compilers">Compilers</a></li>
<li><a class="reference internal" href="#commands">Commands</a></li>
<li><a class="reference internal" href="#variables">Variables</a></li>
<li><a class="reference internal" href="#properties">Properties</a></li>
<li><a class="reference internal" href="#modules">Modules</a></li>
<li><a class="reference internal" href="#ctest">CTest</a></li>
<li><a class="reference internal" href="#cpack">CPack</a></li>
</ul>
</li>
<li><a class="reference internal" href="#deprecated-and-removed-features">Deprecated and Removed Features</a></li>
<li><a class="reference internal" href="#other-changes">Other Changes</a></li>
<li><a class="reference internal" href="#updates">Updates</a><ul>
<li><a class="reference internal" href="#id1">3.31.1, 3.31.2, 3.31.3, 3.31.4, 3.31.5, 3.31.6, 3.31.7, 3.31.8</a></li>
</ul>
</li>
</ul>
</li>
</ul>

  </div>
  <div>
    <h4>Previous topic</h4>
    <p class="topless"><a href="4.0.html"
                          title="previous chapter">CMake 4.0 Release Notes</a></p>
  </div>
  <div>
    <h4>Next topic</h4>
    <p class="topless"><a href="3.30.html"
                          title="next chapter">CMake 3.30 Release Notes</a></p>
  </div>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/release/3.31.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<search id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="Related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="3.30.html" title="CMake 3.30 Release Notes"
             >next</a> |</li>
        <li class="right" >
          <a href="4.0.html" title="CMake 4.0 Release Notes"
             >previous</a> |</li>
  <li>
    <label class="sidebar-toggle" for="sidebar-check"></label>
  </li>
  <li class="rootlink">
    <img src="../_static/cmake-logo-16.png" width="16" height="16" alt=""/>
    <a href="https://cmake.org/">CMake 4.1.1</a>
    <span class="reldelim1"> &#187;</span>
  </li>
  <li>
    <a href="../index.html">Documentation</a> &#187;
  </li>

          <li class="nav-item nav-item-1"><a href="index.html" >CMake Release Notes</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">CMake 3.31 Release Notes</a></li> 
      </ul>
    </div>

    <div class="footer" role="contentinfo">
    &#169; Copyright 2000-2025 Kitware, Inc. and Contributors.
      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3.
    </div>
<script type="text/javascript">
(function() {
  "use strict";
  const hide = () => document.getElementById("sidebar-check").checked = false;
  addEventListener("keydown", e => (e.key === "Escape") && hide());
  addEventListener("click", e => (e.target.tagName === "A") && hide());
  addEventListener("hashchange", hide)
})();
</script>
  </body>
</html>